package cn.com.self.apis.collect.entity;

import cn.com.self.apis.files.entity.Files;
import cn.com.self.apis.member.entity.UMemberInfoRelation;
import cn.com.selfsoft.smartcity.commons.entity.AbstractEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;

/**
 * <p>
 *
 * </p>
 *
 * @author liangwt
 * @since 2020-05-29
 */
@Data
@ApiModel(value = "收藏类")
public class CollectionInfoVO extends AbstractEntity implements Serializable {

    private static final long serialVersionUID = 1L;


    /**
     * 会员id
     */
    @ApiModelProperty(value = "会员id")
    private Long userId;

    /**
     * 收藏关联id
     */
    @ApiModelProperty(value = "收藏关联id")
    private Long collectionId;

    /**
     * 收藏类型（1需求、2用户）
     */
    @ApiModelProperty(value = "收藏类型（1需求、2用户）")
    private Integer collectionType;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape=JsonFormat.Shape.STRING,pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date createTime;

    /**
     * 收藏内容的标题
     */
    @ApiModelProperty(value = "收藏内容的标题")
    private String collectionTitle;

    /**
     * 用户名称
     */
    @ApiModelProperty(value = "用户名称")
    private String name;

    /**
     * 联系方式
     */
    @ApiModelProperty(value = "联系方式")
    private String telePhone;

    /**
     * 擅长领域，技术语言
     */
    @ApiModelProperty(value = "scly擅长领域，jsyy技术语言")
    List<UMemberInfoRelation> memberInfoRelationList;

    /**
     * 项目名称
     */
    @ApiModelProperty(value = "项目名称")
    private String title;
    /**
     * 金额
     */
    @ApiModelProperty(value = "金额")
    private BigInteger budgetAmount;

    @ApiModelProperty(value = "开发周期（天）")
    private String developmentCycle;

    @ApiModelProperty(value = "需求类型（字典requirementsType:1移动端、2pc端、3小程序端、4其他）")
    private String requirementsType;

    @NotNull(message = "需求描述不能为空")
    @NotBlank(message = "需求描述不能为空")
    @ApiModelProperty(value = "需求描述")
    private String requirementsInfo;

    @ApiModelProperty(value = "接单要求")
    private String receivingInfo;

    @ApiModelProperty(value = "交付要求")
    private String payInfo;

    @ApiModelProperty(value = "电话")
    private String telephone;

    @ApiModelProperty(value = "QQ")
    private String qq;

    @ApiModelProperty(value = "微信")
    private String vxNo;

    @ApiModelProperty(value = "备注")
    private String remarks;

    @ApiModelProperty(value = "删除状态（字典 delFlag 0正常 1已删除）")
    private String delFlag;

    @ApiModelProperty(value = "会员id")
    private String memberId;

    @ApiModelProperty(value = "需求分类（分类id）")
    private String classificationId;

    @TableField(exist = false)
    @ApiModelProperty(value = "附件")
    private List<Files> files;

    @ApiModelProperty(value = "竞标范围选择(字典)")
    private String scope;

    @ApiModelProperty(value = "简介")
    private String content;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Timestamp startTime;


    @ApiModelProperty(value = "投标截止时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Timestamp entTime;

    @ApiModelProperty(value = "项目状态（1竞标中、2进行中、3待评价、4已完成）")
    private String requirementsState;

    @ApiModelProperty(value = "头像(附件url)")
    private String headPortraitUrl;

    /**
     * 邮箱
     */
    @ApiModelProperty(value = "邮箱")
    private String email;

    /**
     * 真实姓名
     */
    @ApiModelProperty(value = "真实姓名")
    private String realName;
    /**
     * 会员类型（1技术人员、2需求人员）
     */
    @ApiModelProperty(value = "会员类型（1技术人员、2需求人员）")
    private String memberType;
    /**
     * 身份证号码
     */
    @Pattern(regexp = "^\\d{15}|\\d{18}$",message = "身份证格式有误")
    @NotNull
    @ApiModelProperty(value = "身份证号码")
    private String idCarno;
    /**
     * 身份证正面照(附件)
     */
    //@NotNull
    @ApiModelProperty(value = "身份证正面照(附件)")
    private String imgIdcarFront;
    /**
     * 身份证反面照（附件）
     */
    //@NotNull
    @ApiModelProperty(value = "身份证反面照（附件）")
    private String imgIdcarBack;
    /**
     * 实名认证（1通过、2不通过）
     */
    @ApiModelProperty(value = "实名认证（1通过、2不通过）")
    private String realState;

    /**
     * 工作年限
     */
    //@NotNull
    @ApiModelProperty(value = "工作年限")
    private String workYear;
    /**
     * 技术等级（1初级、2中级、3高级、4顶尖）
     */
    @ApiModelProperty(value = "技术等级（1初级、2中级、3高级、4顶尖）")
    private String level;

    @ApiModelProperty(value = "所在省份（字典 province）")
    private String province;
    @ApiModelProperty(value = "驻场（字典 onSite 1驻场 2不驻场）")
    private String onSite;
    @ApiModelProperty(value = "个人简介")
    private String personalProfile;

    @ApiModelProperty(value = "浏览量")
    private BigDecimal showNum;

    @ApiModelProperty(value = "创建时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape= JsonFormat.Shape.STRING,pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date createDate;
    @ApiModelProperty(value = "更新时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape=JsonFormat.Shape.STRING,pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date updateDate;

    @ApiModelProperty(value = "评价等级，1星   1.5星.............5星好评")
    private String grading;
}
